package solicitudesApp.Functions;

import java.sql.SQLException;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

import sMySQLappTemplate.Core.Command;
import sMySQLappTemplate.Core.FeatureTemplate;
import solicitudesApp.Core.ApplicationsAppCore;
import solicitudesApp.GUI.FormularioPase;

public class EfectuarPase extends FeatureTemplate
{	
	private DefaultComboBoxModel dataDestinos;
	private TablaPases dataPases;
	
	public EfectuarPase(ApplicationsAppCore app){
		super(app);
		dataDestinos = new DefaultComboBoxModel();
		dataPases = new TablaPases();
		app.registerButtonForApplicationsTools(new efectuarPase(this), "/images/subscriptions.png", "Agregar Pase");
	}
	
	@SuppressWarnings("unchecked")
	private class efectuarPase extends Command
	{
		public efectuarPase(FeatureTemplate feature) {
			super(feature);
			// TODO Auto-generated constructor stub
		}

		@Override
		public Object ExecCommand(Object... args) 
		{
			try {
				cargarDestinos();
				cargarTablaPases();
				new FormularioPase((EfectuarPase)this.receiver);		
			} 
			catch (Exception e)	{
				// TODO cartelito mejorado de: debe seleccionar una solicitud
				JOptionPane.showMessageDialog(null, "Debe Seleccionar una Solicitud", "- ERROR MOLESTO -", JOptionPane.ERROR_MESSAGE);
			}
			return null;
		}
		
	}
	
	public void accept(String destino)
	{		
		int idSolicitud = ((ApplicationsAppCore)this.appCore).getIdSolicitudSeleccionada();
		try {
			this.appCore.sendCommand("insert into Pases (fecha, Solicitud_idSolicitud, Destino_Denominacion) values (CURDATE()," + idSolicitud + ",'" + destino + "');");
		} catch (SQLException e) {
			// TODO Cartelito de Error de Funcionalidad
			e.printStackTrace();
		}		
		((ApplicationsAppCore)this.appCore).cargarTablaSolicitudes();		
	}
	
	public DefaultComboBoxModel getDataDestinos() {
		return dataDestinos;
	}

	public DefaultTableModel getDataPases() {
		return dataPases;
	}
	
	public void cargarDestinos()
	{
		try {
			appCore.populateComboBox(dataDestinos, "select * from Destinos ;");
		} catch (SQLException e) {
			// TODO Cartelito de Error de Funcionalidad
			e.printStackTrace();
		}
	}
	
	public void cargarTablaPases()
	{
		int idSolicitud = ((ApplicationsAppCore)this.appCore).getIdSolicitudSeleccionada();
		String query = "select Destino_Denominacion, fecha from Pases where Solicitud_idSolicitud = " + idSolicitud + ";";
	
		try {
			appCore.populateTable(dataPases, query);
		} catch (SQLException e) {
			// TODO Cartelito de Error de Funcionalidad
			e.printStackTrace();
		}
	}
}